from django.db.models import Count
from django.shortcuts import render,redirect,HttpResponse
from app03 import models         #引入表
from django import forms
from app03.utils.pegination import Pegination
from app03.utils.bootrsap import  BootrsapModelForm

########## 员工薪资管理  #########
#部门列表
def deant_list(request):
    # 搜索框
    seach_list = request.GET.get('q', '')
    data_t = {}
    if seach_list:
        data_t['title__contains'] =seach_list
    #获取数据库全部信息
    objest=models.BuMen.objects.filter(**data_t)
    # 分页
    page_object = Pegination( request,objest, page_size=8 )
    coxtent = {
        'objest': page_object.page_mun,
        'page_string': page_object.html(),
        'seach_list':seach_list
    }

    return render(request,'deant_list.html',coxtent)

#新建部门
class DeantModelForm(BootrsapModelForm):
    # 设置输入部门不能小于2个字符
    title= forms.CharField( min_length=2, label='部门')
    class Meta:
        #关联表
         model=models.BuMen
         fields=['title']

def deant_add(request):
       if request.method=='GET':
           # 使用ModelForm表单
           tokens=DeantModelForm()
           return render(request, 'deant_add.html', {'tokens':tokens} )
       else:
           #post请求，接收用户提交的数据
           tokens=DeantModelForm(data=request.POST)
           #验证表单
           if tokens.is_valid():
               #自动保存到数据库的表当中
               tokens.save()
               return redirect('/deant/list/')

           #验证失败，在页面上提示错误信息
           return render(request,'deant_add.html',{'tokens':tokens})

#编辑部门
def deant_edit(request,nid):
    # 根据id获取部门表对于的那一列的数据
    row_s = models.BuMen.objects.filter( id=nid).first()
    if request.method=='GET':
        # 将表中的每一列传给页面  在前端页面生成对应的排版
        tokens=DeantModelForm(instance=row_s)
        return render(request,'deant_edit.html',{'tokens':tokens})
    else:
        #获取到用户发送的post请求 得到数据  将用户提交的数据更新到当前行（instance=row_object）
        tokens=DeantModelForm(data=request.POST,instance=row_s)
        if tokens.is_valid():
            # 自动提交到数据库
            tokens.save()
            return redirect('/deant/list/')
        else:
            #验证失败 则在页面上提示
            return  render(request,'deant_edit.html',{'tokens':tokens})

#删除部门
def deant_delete(request):
    #获取id
    sid=request.GET.get('sid')
    #根据Id删除表数据
    models.BuMen.objects.filter(id=sid).delete()
    #回到部门列表
    return redirect('/deant/list/')

#文件上传
from openpyxl import load_workbook
def deant_upload(request):
        # 获取用户上传的文件
        file_object = request.FILES.get( 'exc' )
        # 对象传给openpyxl,由openpyxl读取表格内容
        wb = load_workbook( file_object )
        sheet = wb.worksheets[0]

        # 循环每一行的内容(从第二行开始)
        for i in sheet.iter_rows( min_row=2 ):
            test = i[0].value  # 获取到每一行文本的内容
            print( test )
            exits = models.BuMen.objects.filter( title=test ).exists()
            # 判断exits的数据是否存在数据库中
            if not exits:
                models.BuMen.objects.create( title=test )
        return redirect( '/deant/list/' )